package com.qqq.adminservice.user.service;

import com.qqq.adminapi.appuser.domain.dto.AppUserDTO;
import com.qqq.adminapi.appuser.domain.dto.AppUserListReqDTO;
import com.qqq.adminapi.appuser.domain.dto.UserEditReqDTO;
import com.qqq.commoncore.domain.dto.BasePageDTO;

import java.util.List;

/**
 * C端用户服务层接口
 */
public interface IAppUserService {

    /**
     * 根据微信Id注册用户
     * @param opneId 微信Id
     * @return C端用户DTO
     */
    AppUserDTO registerByOpenId(String opneId);

    /**
     * 根据openId查询
     * @param openId ⽤户微信ID
     * @return C端⽤户DTO
     */
    AppUserDTO findByOpenId(String openId);

    /**
     * 根据phone查询⽤户信息
     * @param phoneNumber ⽤户手机号
     * @return C端⽤户VO
     */
    AppUserDTO findByPhone(String phoneNumber);

    /**
     * 手机号注册
     * @param phoneNumber ⽤户手机号
     * @return C端⽤户VO
     */
    AppUserDTO registerByPhone(String phoneNumber);

    /**
     * 编辑⽤户
     *
     * @param userEditReqDTO ⽤户编辑DTO
     * @return void类型
     */
    void edit(UserEditReqDTO userEditReqDTO);

    /**
     * 查询C端用户
     * @param appUserListReqDTO 查询C端用户DTO
     * @return C端用户分页结果
     */
    BasePageDTO<AppUserDTO> getUserList(AppUserListReqDTO appUserListReqDTO);

    /**
     * 根据⽤户id查询
     * @param userId ⽤户ID
     * @return C端⽤户DTO
     */
    AppUserDTO findById(Long userId);
    /**
     * 根据ids获取⼈员列表
     *
     * @param userIds ⽤户ID列表
     * @return C端⽤户DTO列表
     */
    List<AppUserDTO> getUserList(List<Long> userIds);
}
